fix(propagation): ensure we run file removal propagation steps
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Fri, 25 Apr 2025 13:52:31 +0000 (15:52 +0200)
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>
Mon, 28 Apr 2025 09:46:41 +0000 (09:46 +0000)
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
src/libsync/owncloudpropagator.cpp

index 65279c5cc744dde53240c827b7dffb0b3f324766..5751911e18643e75ec0231d248765a288e56a689 100644 (file)
@@ -1638,16 +1638,7 @@ void PropagateRootDirectory::slotSubJobsFinished(SyncFileItem::Status status)
         return;
     }
 
-    if (!_dirDeletionJobs._jobsToDo.empty()) {
-        _dirDeletionJobs.scheduleSelfOrChild();
-        return;
-    }
-
-    if (status != SyncFileItem::Success
-        && status != SyncFileItem::Restoration
-        && status != SyncFileItem::BlacklistedError
-        && status != SyncFileItem::FileNameClash
-        && status != SyncFileItem::Conflict) {
+    if (status == SyncFileItem::FatalError) {
         if (_state != Finished) {
             // Synchronously abort
             abort(AbortType::Synchronous);
@@ -1661,18 +1652,18 @@ void PropagateRootDirectory::slotSubJobsFinished(SyncFileItem::Status status)
     if (_errorStatus == SyncFileItem::NoStatus) {
         switch (status) {
         case SyncFileItem::NoStatus:
-        case SyncFileItem::FatalError:
-        case SyncFileItem::NormalError:
-        case SyncFileItem::SoftError:
-        case SyncFileItem::Conflict:
         case SyncFileItem::FileIgnored:
-        case SyncFileItem::FileLocked:
         case SyncFileItem::Restoration:
-        case SyncFileItem::FileNameInvalid:
-        case SyncFileItem::FileNameInvalidOnServer:
-        case SyncFileItem::DetailError:
         case SyncFileItem::Success:
             break;
+        case SyncFileItem::FileLocked:
+        case SyncFileItem::DetailError:
+        case SyncFileItem::SoftError:
+        case SyncFileItem::Conflict:
+        case SyncFileItem::FatalError:
+        case SyncFileItem::FileNameInvalid:
+        case SyncFileItem::FileNameInvalidOnServer:
+        case SyncFileItem::NormalError:
         case SyncFileItem::FileNameClash:
         case SyncFileItem::BlacklistedError:
             _errorStatus = status;